package schach.view;


import java.awt.event.*;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.TextArea;
import java.io.File;
import java.io.IOException;
import java.rmi.RemoteException;
import java.util.ArrayList;

import javax.imageio.*;

import schach.GameController;
import schach.server.controller.GameControllerImpl;
import schach.server.model.Feld;

import java.awt.image.BufferedImage;


public class Schachbrett extends Frame implements ActionListener {
	
	private GameController controller;
	private int gedruecktX = -1;
	private int gedruecktY = -1;
	private boolean schwarzAmZug = false;
	private boolean firstPaint = true;
	
	public Schachbrett() {
		controller = new GameControllerImpl();
		
		setSize(1000, 700);
		setLayout(null);
	
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		for (int i = 0; i < 8; i++) {
			for (int j = 0; j < 8; j++) {
				Knopf button = new Knopf(i, j);
				add(button);
				button.addActionListener(this);
				
			}
		}
		TextArea text = new TextArea();
		text.setLocation(100, 100);
		text.setSize(300, 300);
		add(text);
		text.append("Hallo \n");
		text.append("Hallo2");
		
	}
		
	public void paint (Graphics g)
	{
		
			BufferedImage bild = null;
			try {
				bild = ImageIO.read(new File("Logo.png"));
			} catch (Exception e) {
				System.out.println(e.getMessage());
			}
			g.drawImage(bild, 0, 400, 1000, 200, null);
			firstPaint = false;
		
	/*
	 * Hier Hinweis f�r Hannes;)
	 * Hab den Path ge�ndert auf src/view/* dann findet Java auch die Bilder siehe unten
	 */
		int [][] feld = new int [8][8];
		for (int i=0;i<4;i++)
			for (int j=0;j<4;j++)
			{
				feld[0+2*i][1+2*j] = 1;
				feld[1+2*i][0+2*j] = 1;
			}

		for (int zei = 0; zei < 8; zei++)
			for (int spa = 0; spa < 8; spa++) {
				g.drawRect(50 + zei * 50, 50 + spa * 50, 50, 50);
				if (feld[zei][spa] == 1)
					g.fillRect(50 + zei * 50, 50 + spa * 50, 50, 50);
				if (feld[zei][spa] != 1){
					g.setColor(Color.white);
					g.fillRect(50 + zei * 50, 50 +spa * 50, 50, 50);
					g.setColor(Color.black);
				}
			}
		
		ArrayList<ArrayList<Feld>> figuren = null;
		try {
			figuren = controller.getBrett().getFelder();
		} catch (RemoteException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		for (ArrayList<Feld> reihe : figuren){
			for (Feld feld1 : reihe){
				if (feld1.getFigur() != null){
					String figurName = feld1.getFigur().getClass().getName();
					new Bild(figurName, feld1.getFigur().isBlack(), feld1.getFigur().getPosition().getX(), feld1.getFigur().getPosition().getY(), g);
				}
				
			}
			
		}
	}

	public static void main(String[] args) {
		new Schachbrett().setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		Knopf knopf = (Knopf) e.getSource();
		System.out.println(knopf.getX() + "" + knopf.getY());
		if (gedruecktX == -1){
			gedruecktX = knopf.getX();
			gedruecktY = knopf.getY();
		}
		else{
			try {
				controller.macheZug(new Feld(gedruecktX, gedruecktY), new Feld(knopf.getX(), knopf.getY()), schwarzAmZug);
			} catch (RemoteException e1) {
				// TODO Auto-generated catch block
				System.out.println("Zug Fehldgeschlagen, auf zum nächsten Versuch!");
				gedruecktX = -1;
				gedruecktY = -1;
				schwarzAmZug = !schwarzAmZug;				
			} catch (NullPointerException e2){
				System.out.println("Unmöglicher Zug!!!!");
			}
			gedruecktX = -1;
			gedruecktY = -1;
			schwarzAmZug = !schwarzAmZug;
			super.paint(getGraphics());
			this.paint(getGraphics());
		}
		
	}
}